#ifndef __GLEDEFFECT_H
#define __GLEDEFFECT_H

#include "stm32f4xx.h"
#include "stdbool.h"

#ifdef __cplusplus
 extern "C" {
#endif /* __cplusplus */

#define MAX_EFFECT_PHASES 10

// 定义LED特效阶段结构体
typedef struct {
    uint32_t on_time;    // 亮时间
    uint32_t off_time;   // 灭时间
} led_effect_phase_t;

// LED状态结构体
typedef struct {
    uint8_t ledNum;                            // LED编号
    uint32_t counter;                          // 定时器计数
    uint8_t current_phase;                     // 当前阶段
    uint8_t total_phases;                      // 总阶段数
    bool loop;                                 // 是否循环
    led_effect_phase_t phases[MAX_EFFECT_PHASES]; // 特效阶段数组
} led_t;


extern void led_effect_handler(led_t *led);
extern void led_init(led_t *led, uint8_t ledNum); 
extern void led_set_effect(led_t *led, led_effect_phase_t *phases, uint8_t total_phases, bool loop);


#ifdef __cplusplus
}
#endif /* __cplusplus */


#endif


